01. Welcome
Welcome to the Beginning iOS App Development Nanodegree Program
Download & Install Xcode
As we mentioned in the video, Xcode is Apple’s integrated development environment (IDE). That's programmer-speak for “the place where you build your apps”. Note, Xcode can only be run on a Macintosh computer.
You can download and install Xcode for free from the App Store on your Mac. To do so, simply click on this link. Depending on your default browser, you may see a popup similiar to this one:
You might see this popup if you use Google Chrome.
If you do see this popup, be sure to select "Launch Application." This will bring up Xcode in the Mac App Store. Click the "Install" button to start the installation process. Remember that this may take some time based on your internet speed, so in the meantime, continue on for more information about programming and the Swift language!
IMPORTANT! If you have previously downloaded a version of Xcode, take a minute now to make sure you're running the most up-to-date version. You can check this by opening the Mac App Store and clicking the "Updates" icon.
If you have any issues installing Xcode, you get help from a Udacity coach on the forum.
Demystifying Cryptic Representations
To write apps for the iPhone, iPad, and Apple Watch, you must learn to read and write code. However, for many people, learning how to read and write code can be rather challenging. Some compare it to reading sheet music for the first time: pitch, key, and timing are all represented with specific symbols, working together to produce a song. Others compare it to seeing the blueprints of an engine: there are thousands of parts on the paper, all of which must fit perfectly together for the engine to actually work!
In its rawest form, code is a lot like these cryptic representations.
Sheet music, engine blueprints, and code can all seem confusing at first glance.
With hundreds of different symbols to interpret, reading and writing code can be a complicated endeavor. This is a journey that may take years to master, but is relatively easy to get started. You'll take your very first steps today!
Before you can have a final product in action (like an app), you have to be able to understand the symbols and blueprints it requires to come together. In iPhone and iPad app development, these symbols and blueprints are created in Swift.
As we mentioned, Swift is a programming language used to write iOS apps. Prior to Swift, the main programming for writing iOS apps was Objective-C; however, we will not cover it here. Instead, here are a few details and features of the Swift language (it's okay if some of these do not make sense now, you can always return to this at a later time):
- Swift was released in 2014 by Apple.
- Swift builds on the best of the C and Objective-C programming languages.
- Swift adopts multiple programming paradigms (like procedural, object-oriented, and functional).
- Swift is designed to work with Apple’s Cocoa frameworks; the Cocoa frameworks are used to create applications for OS X, iOS, and watchOS.
- Swift is designed to catch and handle errors gracefully.
- Swift contains many modern programming language features (like closures, protocols, and generics).
The Swift Programming Language
Swift's logo communicates Apple's confidence and excitement about the language.
The Nature of Static Representations
Sheet music, blueprints, and code are all static representations. This means that once they are finalized, they do not change. However, they can be reproduced, and with each replication, these static representations can yield a slightly different result.
For example, many orchestras around the world might share the same sheet music, but each time that sheet music is played, the sound may be different, depending on an orchestra's composition and many other variables.
Likewise, on any given run of an app, variables like the network strength or a user's location could influence the way an app runs and performs. Every instance of the representation is a completely new experience.
In each execution, the robot's and star's positions change.